﻿using System;
namespace Kis.Xroad.Eu {
    
    
    [System.SerializableAttribute()]
    public partial class TypeWithAttributes {
        
        private System.Int32? @__builtInAttributeWithDefaultValue = new Xtee.Core.Schema.XsdInt("1");
        
        private int @__builtinAttributeRequired;
        
        private System.Int32? @__builtInAttribute;
        
        private global::Kis.Xroad.Eu.WorkDay @__userDefinedAttributeWithDefaultValue = new global::Kis.Xroad.Eu.WorkDay("Friday");
        
        private global::Kis.Xroad.Eu.WorkDay @__userDefinedAttribute;
        
        private global::Kis.Xroad.Eu.WorkDay @__referedUserDefinedAttribute;
        
        public TypeWithAttributes() {
        }
        
        /// <summary>
        /// All parameters
        /// </summary>
        public TypeWithAttributes(System.Int32? @builtInAttributeWithDefaultValue, int @builtinAttributeRequired, System.Int32? @builtInAttribute, global::Kis.Xroad.Eu.WorkDay @userDefinedAttributeWithDefaultValue, global::Kis.Xroad.Eu.WorkDay @userDefinedAttribute, global::Kis.Xroad.Eu.WorkDay @referedUserDefinedAttribute) {
            this.@__builtInAttributeWithDefaultValue = @builtInAttributeWithDefaultValue;
            this.@__builtinAttributeRequired = @builtinAttributeRequired;
            this.@__builtInAttribute = @builtInAttribute;
            this.@__userDefinedAttributeWithDefaultValue = @userDefinedAttributeWithDefaultValue;
            this.@__userDefinedAttribute = @userDefinedAttribute;
            this.@__referedUserDefinedAttribute = @referedUserDefinedAttribute;
        }
        
        /// <summary>
        /// Required parameters
        /// </summary>
        public TypeWithAttributes(int @builtinAttributeRequired) {
            this.@__builtinAttributeRequired = @builtinAttributeRequired;
        }
        
        /// <summary>
        /// Copy Constructor
        /// </summary>
        protected TypeWithAttributes(TypeWithAttributes @typeWithAttributes) {
            this.@__builtInAttributeWithDefaultValue = @typeWithAttributes.BuiltInAttributeWithDefaultValue;
            this.@__builtinAttributeRequired = @typeWithAttributes.BuiltinAttributeRequired;
            this.@__builtInAttribute = @typeWithAttributes.BuiltInAttribute;
            this.@__userDefinedAttributeWithDefaultValue = @typeWithAttributes.UserDefinedAttributeWithDefaultValue;
            this.@__userDefinedAttribute = @typeWithAttributes.UserDefinedAttribute;
            this.@__referedUserDefinedAttribute = @typeWithAttributes.ReferedUserDefinedAttribute;
        }
        
        public virtual System.Int32? BuiltInAttributeWithDefaultValue {
            get {
                return this.@__builtInAttributeWithDefaultValue;
            }
            set {
                this.@__builtInAttributeWithDefaultValue = value;
            }
        }
        
        public virtual int BuiltinAttributeRequired {
            get {
                return this.@__builtinAttributeRequired;
            }
            set {
                this.@__builtinAttributeRequired = value;
            }
        }
        
        public virtual System.Int32? BuiltInAttribute {
            get {
                return this.@__builtInAttribute;
            }
            set {
                this.@__builtInAttribute = value;
            }
        }
        
        public virtual global::Kis.Xroad.Eu.WorkDay UserDefinedAttributeWithDefaultValue {
            get {
                return this.@__userDefinedAttributeWithDefaultValue;
            }
            set {
                this.@__userDefinedAttributeWithDefaultValue = value;
            }
        }
        
        public virtual global::Kis.Xroad.Eu.WorkDay UserDefinedAttribute {
            get {
                return this.@__userDefinedAttribute;
            }
            set {
                this.@__userDefinedAttribute = value;
            }
        }
        
        public virtual global::Kis.Xroad.Eu.WorkDay ReferedUserDefinedAttribute {
            get {
                return this.@__referedUserDefinedAttribute;
            }
            set {
                this.@__referedUserDefinedAttribute = value;
            }
        }
    }
}
